package br.com.iswe.core.dao;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

@SuppressWarnings("serial")
public class QueryDetails implements Serializable {
	
	protected int numeroPagina  = -1;
	protected int tamanhoPagina = -1;
	protected List<String> orderList = new ArrayList<String>();
	
	public Integer getNumeroPagina() {
		return numeroPagina;
	}
	public void setNumeroPagina(Integer numeroPagina) {
		this.numeroPagina = numeroPagina;
	}
	
	public boolean isPagingSetuped(){
		return numeroPagina  != -1 && tamanhoPagina != -1;
	}
	
	public Integer getTamanhoPagina() {
		return tamanhoPagina;
	}
	public void setTamanhoPagina(Integer tamanhoPagina) {
		this.tamanhoPagina = tamanhoPagina;
	}
	
	/**
	 * Calcula o primeiro registro da querie de acordo com as informacoes de paginacao.
	 * @return
	 */
	public Integer calculeFirstResult() {
		int retorno = 0;
		if(getNumeroPagina() > 1){
			retorno = (getNumeroPagina() - 1) * getTamanhoPagina();
		}
		return retorno;
	}
	
	@Override
	public String toString() {
		return "PageInfo: numeroPagina: " + numeroPagina + " tamanhoPagina: " + tamanhoPagina;
	}
	
	public List<String> getOrderList() {
		return orderList;
	}
	
	public void addOrderPropertyAsc(String property){
		orderList.add("a-" + property);
	}
	public void addOrderPropertyDesc(String property){
		orderList.add("d-" + property);
	}
}
